# coding=utf-8
from rest_framework.serializers import ModelSerializer, IntegerField, BooleanField, Serializer
from erp_system.models import PermissionsModel,RolesModel
from .permission_serializer import PermissionsSerializer

class BaseRolesSerializer(ModelSerializer):
    '''
    普通的序列化类，支持：新增，修改，修改角色名，删除，查询
    '''

    permissions = PermissionsSerializer(many=True,read_only=True)

    class Meta:
        model = RolesModel
        fields='__all__'

# 可以定义多个序列化（根据不同情况来使用不同的序列化，在view那要get_serializer_class重写，来进行判断）
class RolesPartialSerializer(ModelSerializer):
    '''
    用于，给某一个角色批量授权的序列化
    '''

    class Meta:
        model = RolesModel
        fields = ['id','permissions']

class RoleSetPermissionSerializer(Serializer):
    '''
        ModelSerializer是要必须加Meta的，这里不需要加Meta的，因为这三个属性都是我们自己定义好的
        所以我们继承Serializer就行了
    '''
    '''
        用于，给某一个角色，单一授权，也包括取消单一授权
    '''

    # 角色ID
    # write_only只负责接收参数，不负责序列化
    # required必须传
    role_id = IntegerField(write_only=True,required=True)

    # 权限ID
    permission_id = IntegerField(write_only=True,required=True)

    # 是否新授予权限（True），还是取消（Flase）
    is_create = BooleanField(write_only=True,required=True)


